package persistencia.csv;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class EncabezadoCSV implements Comparable<EncabezadoCSV> {

	protected String tipo;
	protected List<String> campos;

	public static String separador = ",";
	
	public String getSeparador() {
		return separador;
	}
	
	public EncabezadoCSV(String tipo) {
		this.tipo = tipo;
		campos = new ArrayList<String>();
	}

	public Iterator<String> getCampos() {
		return campos.iterator();
	}
	
	public int indiceDe(String campo) {
		return campos.indexOf(campo);
	}
	
	public String nombreDe(int indice) {
		return campos.get(indice);
	}
	
	public int CantidadDeCampos() {
		return campos.size();
	}
	
	public boolean agregar(String campo) {
		int indice = indiceDe(campo);
		if (indice < 0)
			campos.add(campo);
		return (indice < 0);
	}
	
	public boolean eliminar(String campo) {
		int indice = indiceDe(campo);
		if (indice >= 0)
			campos.remove(indice);
		return (indice >= 0);
	}
	
	public String getTipo() {
		return this.tipo;
	}

	public String toString() {
		String str = new String();
		
		Iterator<String> it = campos.iterator();
		while (it.hasNext()) {
			String valor = it.next();
			if (!str.isEmpty())
				str+= separador;
			str+=valor;
		}
		return str;
	}

	@Override
	public int compareTo(EncabezadoCSV otro) {
		int iguales = (this.getTipo().compareTo(otro.getTipo()));
		
		if (iguales != 0) {
			Iterator<String> itA = this.getCampos();
			Iterator<String> itB = otro.getCampos();
			while ((iguales == 0) && (itA.hasNext()) && (itB.hasNext())) {
				iguales = (itA.next().compareTo(itB.next()));
			}
			if (itA.hasNext())
				iguales = 1;
			else if (itB.hasNext())
				iguales = -1;
		}
		return iguales;
	}
}
